/**
 * MCP 服务器测试文件
 * 这个文件用于测试我们的MCP时间服务器是否正常工作
 * 它模拟MCP客户端的行为，发送请求并验证响应
 */

import { spawn } from 'child_process';
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

/**
 * 测试MCP服务器
 * 启动服务器进程并发送测试请求
 */
async function testMCPServer() {
  console.log("开始测试MCP时间服务器...");
  
  // 启动MCP服务器进程
  const serverProcess = spawn('node', [join(__dirname, '../src/index.js')], {
    stdio: ['pipe', 'pipe', 'pipe']
  });
  
  let serverOutput = '';
  let serverError = '';
  
  // 收集服务器输出
  serverProcess.stdout.on('data', (data) => {
    serverOutput += data.toString();
    console.log('服务器输出:', data.toString());
  });
  
  serverProcess.stderr.on('data', (data) => {
    serverError += data.toString();
    console.error('服务器错误:', data.toString());
  });
  
  // 等待服务器启动
  await new Promise(resolve => setTimeout(resolve, 1000));
  
  // 测试请求数据
  const testRequests = [
    // 获取工具列表
    {
      jsonrpc: "2.0",
      id: 1,
      method: "tools/list",
      params: {}
    },
    // 获取当前时间
    {
      jsonrpc: "2.0",
      id: 2,
      method: "tools/call",
      params: {
        name: "get_current_time",
        arguments: {}
      }
    },
    // 格式化时间
    {
      jsonrpc: "2.0",
      id: 3,
      method: "tools/call",
      params: {
        name: "format_time",
        arguments: {
          format: "iso"
        }
      }
    }
  ];
  
  try {
    // 发送测试请求
    for (const request of testRequests) {
      console.log(`\n发送请求: ${request.method}`);
      serverProcess.stdin.write(JSON.stringify(request) + '\n');
      
      // 等待响应
      await new Promise(resolve => setTimeout(resolve, 500));
    }
    
    console.log("\n测试完成！");
    
  } catch (error) {
    console.error("测试过程中出错:", error);
  } finally {
    // 关闭服务器进程
    serverProcess.kill();
  }
}

// 运行测试
testMCPServer().catch(console.error); 